Erre a kérdésre már itt vannak válaszok: Express js - nem lehet átirányítani (4 válasz) 7 éve zárva. Passportjs-t használok, alatta egy köztes szoftverrel. Tegyük fel, hogy ellenőrizni kell, hogy a felhasználó bejelentkezik-e, amikor bizonyos dolgokat kér. Ha nincs bejelentkezve, akkor át kell irányítani a bejelentkezési oldalra. Van egy kérési útvonalam az alábbiak szerint: app.put ('/ fantasyteams /: fantasyTeamId', auth. Ezt az útvonalat akkor hívják meg, amikor a felhasználó megpróbálja frissíteni a Fantasy Team nevű erőforrást a webhelyen Az auth.requiresLogin a következő köztes szoftver: export.requiresLogin = függvény (req, res, next) { if (req.isAuthenticated ()) { visszatérés következő () } return res.redirect ("/ signin"); }; Miután bejelentkezett a felhasználómba, a munkamenet cookie törlésével szimuláltam a munkamenet lejártát. Ezt követően a weboldalon PUT '/ fantasyteams / 123' kérést tettem a fantasy csapat 123. számának frissítésére. A fantasyteams.update egyszerűen egy mongodb / mongúz mentési művelet: export.update = függvény (req, res) { var fantasyteam = req.fantasyteam; fantasyteam = _.extend (fantasyteam, req.body); fantasyteam.save (function (err) { res.jsonp (fantasyteam); }); }; Ahogy az várható volt, a fenti útvonalkezelő (app.put ...) elkapta a kérést, továbbította az auth.requiresLogin köztes szoftvernek, hogy ellenőrizze, be van-e jelentkezve a felhasználó. Tehát kiderül, hogy a felhasználó nincs bejelentkezve, mivel én töröltem munkamenet sütije. res.redirect a várt módon hívódik meg. A webhely azonban nem irányít át a bejelentkezési oldalra. Ezt látom a node.js parancsnaplóiban: PUT / bejelentkezés 404 328 ms Mit csináltam rosszul?
2021-02-25 08:20:39
Úgy tűnik, a probléma az, hogy nincs útvonalkezelője a PUT / bejelentkezéshez. Az eredeti kérés egy put volt, így amikor átirányítja, akkor is része annak a böngészőből származó "put" kérésnek. Csak adj hozzá egy kezelőt a put / post / bármi alkalmazáshoz az app.all ('/ signin') segítségével 3 | Nem a keresett válasz? Böngésszen a node.js munkamenet sütik expressz passport.js címkével ellátott többi kérdésben, vagy tegye fel saját kérdését